﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Grupo2.Persistencia;
using Grupo2.Dominio;

namespace Grupo2.Pruebas
{
    [TestFixture]
    public class TestHabilidadTecnicaDAO
    {
        [Test]
        public void TestCrearHabilidadTecnica()
        {
            //Creamos un objeto nuevoHabilidadTecnica del tipo HabilidadTecnica
            HabilidadTecnica nuevoHabilidadTecnica = new HabilidadTecnica();

            //Asignamos valores a los atributos al objeto nuevoHabilidadTecnica
            nuevoHabilidadTecnica.Id_Habilidad_Tecnica = 1;
            nuevoHabilidadTecnica.Postulante.Id_Postulante = 1;
            nuevoHabilidadTecnica.Descripcion_Habilidad = "PMP";
            nuevoHabilidadTecnica.Nivel_Dominio = "Avanzado";

            //En este objeto cargaremos los valores
            HabilidadTecnicaDAO HabilidadTecnicaDAO = new HabilidadTecnicaDAO();

            //Creamos un objeto HabilidadTecnicaCreado del tipo HabilidadTecnica y mediante el método CrearHabilidadTecnica definido en
            //la clase HabilidadTecnicaDAO.cs hacemos luego que HabilidadTecnicaCreado reciba los datos del objeto HabilidadTecnicaDAO
            HabilidadTecnica HabilidadTecnicaCreado = HabilidadTecnicaDAO.CrearHabilidadTecnica(nuevoHabilidadTecnica);

            //Con esto verificamos que se haya creado el registro en la BD
            Assert.NotNull(HabilidadTecnicaCreado);
        }

        [Test]
        public void TestObtenerHabilidadTecnica()
        {
            Int32 Id_Habilidad_Tecnica_Buscado = 1;

            //Creamos un objeto del tipo HabilidadTecnicaDAO
            HabilidadTecnicaDAO habilidadTecnicaDAO = new HabilidadTecnicaDAO();

            //Creamos un objeto HabilidadTecnicaExistente y le asignamos los datos obtenido con el método ObtenerHabilidadTecnica
            //que esta definido en la clase HabilidadTecnicaDAO.cs
            HabilidadTecnica habilidadTecnicaExistente = habilidadTecnicaDAO.ObtenerHabilidadTecnica(Id_Habilidad_Tecnica_Buscado);

            //Con esto verificamos sí hemos el habilidadTecnica buscado se ha encontrado
            Assert.AreEqual(Id_Habilidad_Tecnica_Buscado, habilidadTecnicaExistente.Id_Habilidad_Tecnica);

            //Con esto verificamos que el campo Nivel_Dominio no este vacio
            Assert.NotNull(habilidadTecnicaExistente.Nivel_Dominio);
        }

        [Test]
        public void ModificarHabilidadTecnica()
        {
            String Nivel_Dominio_modificado = "Alto";
            HabilidadTecnicaDAO habilidadTecnicaDAO = new HabilidadTecnicaDAO();

            HabilidadTecnica habilidadTecnicaExistente = habilidadTecnicaDAO.ObtenerHabilidadTecnica(1);
            habilidadTecnicaExistente.Nivel_Dominio = Nivel_Dominio_modificado;

            HabilidadTecnica habilidadTecnicaModificado = null;

            Assert.Catch<Exception>(delegate
            {
                habilidadTecnicaModificado = habilidadTecnicaDAO.CrearHabilidadTecnica(habilidadTecnicaExistente);
            });

        }


        [Test]
        public void TestEliminarHabilidadTecnica()
        {
            Int32 Id_Habilidad_Tecnica_A_Elminar = 1;

            HabilidadTecnicaDAO habilidadTecnicaDAO = new HabilidadTecnicaDAO();

            habilidadTecnicaDAO.EliminarHabilidadTecnica(Id_Habilidad_Tecnica_A_Elminar);

            HabilidadTecnica existe = habilidadTecnicaDAO.ObtenerHabilidadTecnica(Id_Habilidad_Tecnica_A_Elminar);

            Assert.IsNull(existe);
        }  
    }
}